#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
用户配置文件
用于存储用户的个性化设置
"""

import os
import json


class UserConfig:
    """
    用户配置管理
    """
    
    # 配置文件路径
    CONFIG_FILE = os.path.join(os.path.dirname(__file__), 'user_settings.json')
    
    # 默认配置
    DEFAULT_CONFIG = {
        "default_city": "北京",  # 默认城市
        "default_location": {
            "city": "北京",
            "province": "北京市",
            "district": "朝阳区"
        }
    }
    
    @classmethod
    def get_default_city(cls) -> str:
        """
        获取用户的默认城市
        
        Returns:
            默认城市名称
        """
        config = cls._load_config()
        return config.get('default_city', cls.DEFAULT_CONFIG['default_city'])
    
    @classmethod
    def set_default_city(cls, city: str):
        """
        设置用户的默认城市
        
        Args:
            city: 城市名称
        """
        config = cls._load_config()
        config['default_city'] = city
        cls._save_config(config)
        print(f"✅ 已设置默认城市为: {city}")
    
    @classmethod
    def _load_config(cls) -> dict:
        """
        加载配置文件
        
        Returns:
            配置字典
        """
        if os.path.exists(cls.CONFIG_FILE):
            try:
                with open(cls.CONFIG_FILE, 'r', encoding='utf-8') as f:
                    return json.load(f)
            except Exception as e:
                print(f"⚠️  加载配置文件失败: {e}，使用默认配置")
                return cls.DEFAULT_CONFIG.copy()
        else:
            return cls.DEFAULT_CONFIG.copy()
    
    @classmethod
    def _save_config(cls, config: dict):
        """
        保存配置文件
        
        Args:
            config: 配置字典
        """
        try:
            with open(cls.CONFIG_FILE, 'w', encoding='utf-8') as f:
                json.dump(config, f, ensure_ascii=False, indent=2)
        except Exception as e:
            print(f"⚠️  保存配置文件失败: {e}")


if __name__ == '__main__':
    # 测试
    print(f"默认城市: {UserConfig.get_default_city()}")
    UserConfig.set_default_city("上海")
    print(f"新的默认城市: {UserConfig.get_default_city()}")

